1
Sintassi Naturale: La Filosofia dell'Overloading degli Operatori
AI037Lesson 17
00:00

La filosofia della Sintassi Naturale afferma che i tipi definiti dall'utente dovrebbero comportarsi come cittadini di prima classe. Implementando l'overloading degli operatori, consentiamo alle classi di utilizzare la notazione standard (come + o ==), il che riduce il carico cognitivo e soddisfa il principio del minimo stupore.

1. Anatomia e Invio

Un operatore è una funzione con un nome speciale: la parola chiave operator seguita da un simbolo. Un operatore unario ha un operando, mentre un operatore binario ha due. Quando definito come funzione membro, l'operando sinistro si lega al puntatore implicito this (a.operator+(b)). Come non-membro, entrambi sono espliciti (operator+(a, b)).

Overloadabile+ - * / % ^& | ~ ! = < >+= -= *= /= << >>== != <= >= && ||++ -- , ->* -> () []Non Overloadabile:: (Scope).* (Dereferenziazione membro). (Punto)?: (Condizionale)Tabella 14.1. Permessi degli Operatori (Rif. p. 684)

2. Vincoli ed Etica

C++ impedisce il "vandalismo linguistico": non puoi creare nuovi simboli (ad esempio, **) o ridefinire operazioni per tipi predefiniti (ad esempio, int + int). Precedenza e associatività sono immutevoli. Principio architetturale: Le classi che definiscono == si integrano senza sforzo con gli algoritmi della libreria come std::find.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>